/**
 * 时间戳或时间 格式化
 * 两个参数：
 * 第一个参数：可选，时间或时间戳，默认为当前时间。第二个参数：可选，转换的格式，默认为YYYY-MM-DD hh:mm:ss。
 * 不补0：YYYY-M-D h:m:s 2018-1-1 0:0:0
 * 加入星期：YYYY-MM-DD www hh:mm:ss 2018-01-01 星期一 00:00:00
 * 加入周：YYYY-MM-DD ww hh:mm:ss 2018-01-01 周一 00:00:00
 */
function formatTime (date, fmt = 'YYYY-MM-DD hh:mm:ss') {
    if (date && date.length === 10) {
      date = date * 1000
    }
    date = typeof date === 'number' ? new Date(date) : new Date()
    
    let obj = {
      Y: date.getFullYear(),
      M: date.getMonth() + 1,
      D: date.getDate(),
      w: date.getDay(),
      h: date.getHours(),
      m: date.getMinutes(),
      s: date.getSeconds()
    }
    let week = ['日', '一', '二', '三', '四', '五', '六']

    for (let key in obj) {
      fmt = fmt.replace(new RegExp(key + '+', 'g'), function (e) {
        var val = obj[key] + '' // 字符串化

        if (key === 'w') {
          return (e.length > 2 ? '星期' : '周') + week[val]
        }
        // e.length： 要求的长度， val.length: 目前的长度，不足的前面补零
        for (let j = 0, len = e.length - val.length; j < len; j++) {
          val = '0' + val
        }
        return val
      })
    }
    return fmt
}
